/**
 * @p.md
 * 
 * ActorMetrics 类用于收集和报告 Actor 系统的指标
 */
import { ActorSystem } from '../actor/actorSystem';

/**
 * Actor 指标类，用于收集和报告 Actor 系统的指标
 */
export class ActorMetrics {
  private _system: ActorSystem;
  private _startTime: number;
  private _messageCount: number = 0;
  private _errorCount: number = 0;
  private _actorCount: number = 0;
  
  /**
   * 创建 Actor 指标
   * @param system Actor 系统
   */
  constructor(system: ActorSystem) {
    this._system = system;
    this._startTime = Date.now();
    
    // 订阅系统事件
    this.subscribeToEvents();
  }
  
  /**
   * 获取系统运行时间（毫秒）
   */
  uptime(): number {
    return Date.now() - this._startTime;
  }
  
  /**
   * 获取消息计数
   */
  messageCount(): number {
    return this._messageCount;
  }
  
  /**
   * 获取错误计数
   */
  errorCount(): number {
    return this._errorCount;
  }
  
  /**
   * 获取 Actor 计数
   */
  actorCount(): number {
    return this._actorCount;
  }
  
  /**
   * 增加消息计数
   */
  incrementMessageCount(): void {
    this._messageCount++;
  }
  
  /**
   * 增加错误计数
   */
  incrementErrorCount(): void {
    this._errorCount++;
  }
  
  /**
   * 增加 Actor 计数
   */
  incrementActorCount(): void {
    this._actorCount++;
  }
  
  /**
   * 减少 Actor 计数
   */
  decrementActorCount(): void {
    this._actorCount--;
  }
  
  /**
   * 订阅系统事件
   */
  private subscribeToEvents(): void {
    // 在实际实现中，这里应该订阅系统事件，如消息发送、Actor 启动和停止等
  }
} 